﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
namespace MO
{
    public interface IDbOperation : IDisposable
    {
        void Dispose();
        int BatchInsert(DataTable table);
        int BatchUpdate(DataTable table, List<string> keys);
        /// <summary>
        /// 执行SQL语句。
        /// </summary>
        /// <param name="cmdText">SQL查询语句，包含零个或多个格式项。</param>
        /// <param name="args">包含零个或多个要格式化的对象的 Object 数组。</param>
        /// <returns>返回影响的行数。</returns>
        int ExecuteQuery(string cmdText, params object[] args);
        /// <summary>
        /// 查出某项数据。
        /// </summary>
        /// <param name="cmdText">SQL查询语句，包含零个或多个格式项。</param>
        /// <param name="args">包含零个或多个要格式化的对象的 Object 数组。</param>
        /// <returns>返回第0行第0项数据。</returns>
        object ExecuteObject(string cmdText, params object[] args);
        /// <summary>
        /// 查询数据。
        /// </summary>
        /// <param name="cmdText">SQL查询语句，包含零个或多个格式项。</param>
        /// <param name="args">包含零个或多个要格式化的对象的 Object 数组。</param>
        /// <returns>返回DataReader。</returns>
        DbDataReader ExecuteReader(string cmdText, params object[] args);
        /// <summary>
        /// 查询数据。
        /// </summary>
        /// <param name="cmdText">SQL查询语句，包含零个或多个格式项。</param>
        /// <param name="args">包含零个或多个要格式化的对象的 Object 数组。</param>
        /// <returns>返回DataTable。</returns>
        DataTable ExecuteDataTable(string cmdText, params object[] args);
        /// <summary>
        /// 生成插入语句。
        /// </summary>
        /// <param name="table">表名。</param>
        /// <param name="columns">插入的字段。</param>
        /// <returns>插入语句字符串。</returns>
        int Insert(string table, Dictionary<string, object> columns);
        /// <summary>
        /// 生成更新语句。
        /// </summary>
        /// <param name="table">表名。</param>
        /// <param name="columns">更新和条件的数据，先添加更新数据，加完后，添加"\r"进行分隔，然后添加条件数据。</param>
        /// <returns>更新语句字符串。</returns>
        int Update(string table, Dictionary<string, object> columns);
    }
}
